﻿// 708 二维差分2.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <memory.h>
#include <vector>
#include <algorithm>


using namespace std;
/*
http://oj.daimayuan.top/course/22/problem/897

给一个n×m的矩阵a1,1,a1,2,…,a1,m,…,an,m和q个修改操作。

一开始所有位置都是0，每次修改给出五个数x1,y1,x2,y2,d，令所有ai,j(x1≤i≤x2,y1≤j≤y2)加上d。

求出所有操作结束之后，整个矩阵的值。

输入格式
第一行三个整数n,m,q(1≤n,m≤109,q≤2×103)。

接下来q行，每行五个整数x1,y1,x2,y2,d(1≤x1≤x2≤n,1≤y1≤y2≤m,1≤d≤109)。

输出格式
为了防止输出过大，输出操作完之后矩阵中所有数的异或和。

样例输入
5 5 3
1 1 2 3 5
2 2 4 3 6
4 3 5 5 10
样例输出
28
*/


/*
typedef long long ll;

const int N = 101000;
int n,m,q; int a[N];
vector<int> numx, numy;
array<int, 5> op[N];
ll a[N][N];

int main()
{
	scanf("%d%d%d",&n,&m,&q);
	for (int i = 1; i <= n; i++) {
		int x1, y1, x2, y2, d;
		scanf("%d%d%d%d%d",&x1,&y1,&x2,&y2,&d);
		op[i] = array<int,5>{ x1,y1,x2,y2,d };
		numx.push_back(x1-1);
		numx.push_back(x2);
		numy.push_back(y1-1);
		numy.push_back(y2 );
	}
	sort(numx.begin(),numx.end());
	numx.erase(unique(numx.begin(), numx.end()), numx.end());

	sort(numy.begin(), numy.end());
	numy.erase(unique(numy.begin(), numy.end()), numy.end());

	for (int i = 1; i <= q; i++) {
		auto [x1, y1, x2, y2, d] = op[i];
		x1 = lower_bound(numx.begin(),numx.end(),x1-1)-numx.begin();
		x2 = lower_bound(numx.begin(),numx.end(),x2)-numx.begin();
		y1 = lower_bound(numy.begin(), numy.end(), y1 - 1) - numy.begin();
		y2 = lower_bound(numy.begin(), numy.end(), y2) - numy.begin();

		a[x1][y1] += d;
		a[x1]y2 + 1] -= d;
		a[x2 + 1][y1] -= d;
		a[x2 + 1][y2 + 1] += d;
	}

	int nX = numx.size(), nY = numy.size();
	for (int i = 1; i <= nX; i++)
		for (int j = 1; j <= nY; j++)
			a[i][j] += a[i][j - 1];
	for (int i = 1; i <= nX; i++)
		for (int j = 1; j <= nY; j++)
			a[i][j] += a[i - 1][j];

	for (int i = 1; i < nX; i++)
		for (int j = 1; j < nY; j++)
			numx[i - 1] + 1 ... numx[i];
			numy[j - 1] + 1 ... numy[j];

	puts("");

	return 0;
}
 */

int main() {
	return 0;
}